package com.awccis.admin.dao;

import com.awccis.admin.model.config.ConfigBean;
import com.awccis.admin.model.order.BreakOrderBean;
import com.awccis.admin.model.order.OrderSimpleInfo;
import com.awccis.admin.model.pay.PaySimpleInfoBean;
import com.awccis.customer.model.order.OrderBean;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.List;

/**
 * @author: txp
 * @date: 2018/5/19 on 下午8:16
 * @since: 1.0
 * @description:
 **/
@Repository
public interface AdminOrderDao {

    /**
     * 查询订单的简单信息
     * @param hashMap startCount, limitCounts
     * @return 订单列表
     */
    List<OrderSimpleInfo> selectSimpleOrderInfo(HashMap hashMap);

    /**
     * 获取订单总数
     * @return 订单总数
     */
    Integer selectCountOrders();

    /**
     * 获取该司机订单总数
     *
     * @param hashMap 司机信息
     * @return 订单总数
     */
    Integer selectCountOrdersByDID(HashMap hashMap);

    /**
     * 获取该乘客订单总数
     *
     * @param hashMap 乘客信息
     * @return 订单总数
     */
    Integer selectCountOrdersByCID(HashMap hashMap);

    /**
     * 通过司机ID获取当前司机的订单
     * @param hashMap
     * @return 订单列表
     */
    List<OrderSimpleInfo> selectSimpleOrderInfoByDriverId(HashMap hashMap);

    /**
     * 通过乘客手机号获取当前司机的订单
     * @param hashMap
     * @return 订单列表
     */
    List<OrderSimpleInfo> selectSimpleOrderInfoByCustomerPhone(HashMap hashMap);

    /**
     * 通过订单id查询当前订单详情
     * @param orderId orderId
     * @return 订单信息
     */
    OrderBean selectDetailOrderInfoByOrderId(Integer orderId);

    /**
     * 获取所有未完成订单
     * @return
     */
    List<OrderBean> selectAllNoFinishOrder();

    /**
     * 根据driver查询当前故障订单
     * @param driverId
     * @return
     */
    OrderBean selectBreakOrderByDriverId(Integer driverId);

    /**
     * 更改order的parentID
     * @param orderId orderId
     * @return 影响行数
     */
    Integer updateOrderParentId(Integer orderId);

    /**
     * 记录故障订单信息
     * @param breakOrderBean breakOrderBean
     * @return 影响行数
     */
    Integer insertBreakOrder(BreakOrderBean breakOrderBean);

    /**
     * 创建新的订单
     * @param orderBean orderBean
     * @return 影响行数
     */
    Integer insertNewOder(OrderBean orderBean);

    /**
     * 查询系统参数
     * @return 系统参数信息
     */
    ConfigBean selectSystemConfigInfo();

    /**
     * 更改系统参数信息
     * @param configBean 系统参数
     * @return 影响行数
     */
    Integer updateSystemConfigInfo(ConfigBean configBean);

}
